From: Jeroen van der Heijden Date: Thu, 17 Sep 2020 11:20:01 +0000 (+0200) Subject: Added shard_duration as list series property X-Git-Tag: archive/raspbian/2.0.44-1+rpi1~1^2~3^2~2^2~11 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=dc7f4862e19a9e279942c03a930803dbce208e24;p=siridb-server.git Added shard_duration as list series property --- diff --git a/grammar/grammar.py b/grammar/grammar.py index 11eef64f..d03c8da5 100644 --- a/grammar/grammar.py +++ b/grammar/grammar.py @@ -74,6 +74,8 @@ class SiriGrammar(Grammar): k_duration_num = Keyword('duration_num') k_end = Keyword('end') k_error = Keyword('error') + k_expiration_log = Keyword('expiration_log') + k_expiration_num = Keyword('expiration_num') k_expression = Keyword('expression') k_false = Keyword('false') k_fifo_files = Keyword('fifo_files') @@ -144,8 +146,7 @@ class SiriGrammar(Grammar): k_server = Keyword('server') k_servers = Keyword('servers') k_set = Keyword('set') - k_expiration_log = Keyword('expiration_log') - k_expiration_num = Keyword('expiration_num') + k_shard_duration = Keyword('shard_duration') k_shards = Keyword('shards') k_show = Keyword('show') k_sid = Keyword('sid') @@ -241,6 +242,7 @@ class SiriGrammar(Grammar): k_length, k_start, k_end, + k_shard_duration, k_pool, most_greedy=False), ',', 1) @@ -350,7 +352,7 @@ class SiriGrammar(Grammar): int_expr), Sequence(k_name, str_operator, string), Sequence( - Choice(k_start, k_end, most_greedy=False), + Choice(k_start, k_end, k_shard_duration, most_greedy=False), int_operator, time_expr), Sequence( diff --git a/include/siri/grammar/grammar.h b/include/siri/grammar/grammar.h index ee629c9a..d52177cc 100644 --- a/include/siri/grammar/grammar.h +++ b/include/siri/grammar/grammar.h @@ -5,7 +5,7 @@ * should be used with the libcleri module. * * Source class: SiriGrammar - * Created at: 2020-09-15 15:01:47 + * Created at: 2020-09-17 11:38:57 */ #ifndef CLERI_EXPORT_SIRI_GRAMMAR_GRAMMAR_H_ #define CLERI_EXPORT_SIRI_GRAMMAR_GRAMMAR_H_ @@ -220,6 +220,7 @@ enum cleri_grammar_ids { CLERI_GID_K_SERVERS, CLERI_GID_K_SET, CLERI_GID_K_SHARDS, + CLERI_GID_K_SHARD_DURATION, CLERI_GID_K_SHOW, CLERI_GID_K_SID, CLERI_GID_K_SIZE, diff --git a/include/siri/version.h b/include/siri/version.h index 95c227fc..564fd702 100644 --- a/include/siri/version.h +++ b/include/siri/version.h @@ -15,7 +15,7 @@ * Note that debian alpha packages should use versions like this: * 2.0.34-0alpha0 */ -#define SIRIDB_VERSION_PRE_RELEASE "-alpha-2" +#define SIRIDB_VERSION_PRE_RELEASE "-alpha-3" #ifndef NDEBUG #define SIRIDB_VERSION_BUILD_RELEASE "+debug" diff --git a/itest/run_all.py b/itest/run_all.py index 37515876..bbbd9770 100644 --- a/itest/run_all.py +++ b/itest/run_all.py @@ -2,6 +2,7 @@ from testing import run_test from testing import Server from testing import parse_args +from test_auto_duration import TestAutoDuration from test_buffer import TestBuffer from test_cluster import TestCluster from test_compression import TestCompression @@ -27,6 +28,7 @@ from test_user import TestUser if __name__ == '__main__': parse_args() + run_test(TestAutoDuration()) run_test(TestBuffer()) run_test(TestCompression()) run_test(TestCreateDatabase()) diff --git a/src/siri/db/listener.c b/src/siri/db/listener.c index dbbdd4e4..b25cbaf7 100644 --- a/src/siri/db/listener.c +++ b/src/siri/db/listener.c @@ -5312,6 +5312,10 @@ static void async_list_series(uv_async_t * handle) case CLERI_GID_K_POOL: qp_add_int64(query->packer, (int64_t) series->pool); break; + case CLERI_GID_K_SHARD_DURATION: + qp_add_int64(query->packer, (int64_t) (series->idx + ? series->idx->shard->duration : 0)); + break; case CLERI_GID_K_START: qp_add_int64(query->packer, (int64_t) series->start); break; diff --git a/src/siri/db/series.c b/src/siri/db/series.c index 5dde9476..d6593472 100644 --- a/src/siri/db/series.c +++ b/src/siri/db/series.c @@ -83,7 +83,7 @@ const uint8_t SERIES_SFC = */ int siridb_series_cexpr_cb(siridb_series_t * series, cexpr_condition_t * cond) { - switch (cond->prop) + switch ((enum cleri_grammar_ids) cond->prop) { case CLERI_GID_K_LENGTH: return cexpr_int_cmp(cond->operator, series->length, cond->int64); @@ -93,14 +93,20 @@ int siridb_series_cexpr_cb(siridb_series_t * series, cexpr_condition_t * cond) return cexpr_int_cmp(cond->operator, series->end, cond->int64); case CLERI_GID_K_POOL: return cexpr_int_cmp(cond->operator, series->pool, cond->int64); + case CLERI_GID_K_SHARD_DURATION: + return cexpr_int_cmp( + cond->operator, + (series->idx ? series->idx->shard->duration : 0), + cond->int64); case CLERI_GID_K_TYPE: return cexpr_int_cmp(cond->operator, series->tp, cond->int64); case CLERI_GID_K_NAME: return cexpr_str_cmp(cond->operator, series->name, cond->str); + default: + /* we must NEVER get here */ + log_critical("Unexpected series property received: %d", cond->prop); + assert (0); } - /* we must NEVER get here */ - log_critical("Unexpected series property received: %d", cond->prop); - assert (0); return -1; } diff --git a/src/siri/grammar/grammar.c b/src/siri/grammar/grammar.c index 91b5ead7..90d57f09 100644 --- a/src/siri/grammar/grammar.c +++ b/src/siri/grammar/grammar.c @@ -5,7 +5,7 @@ * should be used with the libcleri module. * * Source class: SiriGrammar - * Created at: 2020-09-15 15:01:47 + * Created at: 2020-09-17 11:38:57 */ #include "siri/grammar/grammar.h" @@ -58,6 +58,8 @@ cleri_grammar_t * compile_siri_grammar_grammar(void) cleri_t * k_duration_num = cleri_keyword(CLERI_GID_K_DURATION_NUM, "duration_num", CLERI_CASE_SENSITIVE); cleri_t * k_end = cleri_keyword(CLERI_GID_K_END, "end", CLERI_CASE_SENSITIVE); cleri_t * k_error = cleri_keyword(CLERI_GID_K_ERROR, "error", CLERI_CASE_SENSITIVE); + cleri_t * k_expiration_log = cleri_keyword(CLERI_GID_K_EXPIRATION_LOG, "expiration_log", CLERI_CASE_SENSITIVE); + cleri_t * k_expiration_num = cleri_keyword(CLERI_GID_K_EXPIRATION_NUM, "expiration_num", CLERI_CASE_SENSITIVE); cleri_t * k_expression = cleri_keyword(CLERI_GID_K_EXPRESSION, "expression", CLERI_CASE_SENSITIVE); cleri_t * k_false = cleri_keyword(CLERI_GID_K_FALSE, "false", CLERI_CASE_SENSITIVE); cleri_t * k_fifo_files = cleri_keyword(CLERI_GID_K_FIFO_FILES, "fifo_files", CLERI_CASE_SENSITIVE); @@ -142,8 +144,7 @@ cleri_grammar_t * compile_siri_grammar_grammar(void) cleri_t * k_server = cleri_keyword(CLERI_GID_K_SERVER, "server", CLERI_CASE_SENSITIVE); cleri_t * k_servers = cleri_keyword(CLERI_GID_K_SERVERS, "servers", CLERI_CASE_SENSITIVE); cleri_t * k_set = cleri_keyword(CLERI_GID_K_SET, "set", CLERI_CASE_SENSITIVE); - cleri_t * k_expiration_log = cleri_keyword(CLERI_GID_K_EXPIRATION_LOG, "expiration_log", CLERI_CASE_SENSITIVE); - cleri_t * k_expiration_num = cleri_keyword(CLERI_GID_K_EXPIRATION_NUM, "expiration_num", CLERI_CASE_SENSITIVE); + cleri_t * k_shard_duration = cleri_keyword(CLERI_GID_K_SHARD_DURATION, "shard_duration", CLERI_CASE_SENSITIVE); cleri_t * k_shards = cleri_keyword(CLERI_GID_K_SHARDS, "shards", CLERI_CASE_SENSITIVE); cleri_t * k_show = cleri_keyword(CLERI_GID_K_SHOW, "show", CLERI_CASE_SENSITIVE); cleri_t * k_sid = cleri_keyword(CLERI_GID_K_SID, "sid", CLERI_CASE_SENSITIVE); @@ -286,12 +287,13 @@ cleri_grammar_t * compile_siri_grammar_grammar(void) cleri_t * series_columns = cleri_list(CLERI_GID_SERIES_COLUMNS, cleri_choice( CLERI_NONE, CLERI_FIRST_MATCH, - 6, + 7, k_name, k_type, k_length, k_start, k_end, + k_shard_duration, k_pool ), cleri_token(CLERI_NONE, ","), 1, 0, 0); cleri_t * shard_columns = cleri_list(CLERI_GID_SHARD_COLUMNS, cleri_choice( @@ -539,9 +541,10 @@ cleri_grammar_t * compile_siri_grammar_grammar(void) cleri_choice( CLERI_NONE, CLERI_FIRST_MATCH, - 2, + 3, k_start, - k_end + k_end, + k_shard_duration ), int_operator, time_expr